package com.huizhonglm.diap.core.utils;

import android.content.res.Resources;
import android.util.DisplayMetrics;

import com.huizhonglm.diap.DiapApplication;

/**
 * dp和px单位转换工具类
 * 
 * @author LiXiaoLong
 * @since 2013年10月2日下午6:24:23
 * @version 1.0
 */
public class DisplayUtil {

	public static int getWidth(){
		Resources res = DiapApplication.getInstance().getResources();
		if (res != null) {
			DisplayMetrics dm = res.getDisplayMetrics();
			return dm != null ? dm.widthPixels : 720;
		}
		return 720;
	}

	public static int getHeight(){
		Resources res = DiapApplication.getInstance().getResources();
		if (res != null) {
			DisplayMetrics dm = res.getDisplayMetrics();
			return dm != null ? dm.heightPixels : 1280;
		}
		return 1280;
	}

	public static float getDensity(){
		Resources res = DiapApplication.getInstance().getResources();
		if (res != null) {
			DisplayMetrics dm = res.getDisplayMetrics();
			return dm != null ? dm.density : 2.0f;
		}
		return 2.0f;
	}

	public static int getDensityDpi(){
		Resources res = DiapApplication.getInstance().getResources();
		if (res != null) {
			DisplayMetrics dm = res.getDisplayMetrics();
			return dm != null ? dm.densityDpi : 320;
		}
		return 320;
	}


	/**
	 * 根据手机的分辨率从dp的单位转成为px(像素)
	 * 
	 * @param dpValue dip值
	 * @return px值
	 */
	public static int dip2px(float dpValue) {
		return (int) (dpValue * getDensity() + 0.5f);
	}

	/**
	 * 根据手机的分辨率从px(像素)的单位 转成为dp
	 * 
	 * @param pxValue px值
	 * @return dip值
	 */
	public static int px2dip(int pxValue) {
		return (int) (pxValue / getDensity() + 0.5f);
	}

	/**
	 * 将px值转换为sp值，保证文字大小不变
	 *
	 * @param pxValue px值
	 * @return sp值
	 */
	public static int px2sp(int pxValue) {
		return (int) (pxValue / getDensity() + 0.5f);
	}

	/**
	 * 将sp值转换为px值，保证文字大小不变
	 * 
	 * @param spValue sp值
	 * @return px值
	 */
	public static int sp2px(float spValue) {
		return (int) (spValue * getDensity() + 0.5f);
	}
}
